home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1999 July: Mac OS SDK / Dev.CD Jul 99 SDK1.toast / Development Kits / Mac OS / QuickDraw3D 1.6 SDK / Mac Interfaces / CIncludes / QD3DWinViewer.h < prev    next >
Encoding:
C/C++ Source or Header  |  1999-05-18  |  15.3 KB  |  504 lines  |  [TEXT/MPS ]

  1. /*
  2.      File:        QD3DWinViewer.h
  3.  
  4.      Contains:    Win32 Viewer Controller Interface File.                                
  5.  
  6.      Version:    Technology:    Quickdraw 3D 1.6
  7.                  Release:    QuickTime 4.0
  8.  
  9.      Copyright:    © 1995-1999 by Apple Computer, Inc., all rights reserved.
  10.  
  11.      Bugs?:        For bug reports, consult the following page on
  12.                  the World Wide Web:
  13.  
  14.                      http://developer.apple.com/bugreporter/
  15.  
  16. */
  17. #ifndef __QD3DWINVIEWER__
  18. #define __QD3DWINVIEWER__
  19.  
  20. #ifndef __QD3D__
  21. #include <QD3D.h>
  22. #endif
  23. #ifndef __QD3DGROUP__
  24. #include <QD3DGroup.h>
  25. #endif
  26.  
  27.  
  28. #if TARGET_OS_WIN32
  29. #include <windows.h>
  30. #endif
  31.  
  32.  
  33.  
  34. #if PRAGMA_ONCE
  35. #pragma once
  36. #endif
  37.  
  38. #ifdef __cplusplus
  39. extern "C" {
  40. #endif
  41.  
  42. #if PRAGMA_IMPORT
  43. #pragma import on
  44. #endif
  45.  
  46. #if PRAGMA_STRUCT_ALIGN
  47.     #pragma options align=power
  48. #elif PRAGMA_STRUCT_PACKPUSH
  49.     #pragma pack(push, 2)
  50. #elif PRAGMA_STRUCT_PACK
  51.     #pragma pack(2)
  52. #endif
  53.  
  54. #if PRAGMA_ENUM_ALWAYSINT
  55.     #pragma enumsalwaysint on
  56. #elif PRAGMA_ENUM_OPTIONS
  57.     #pragma option enum=int
  58. #elif PRAGMA_ENUM_PACK
  59.     #if __option(pack_enums)
  60.         #define PRAGMA_ENUM_PACK__QD3DWINVIEWER__
  61.     #endif
  62.     #pragma options(!pack_enums)
  63. #endif
  64.  
  65. #if TARGET_OS_WIN32
  66. typedef void *                            TQ3ViewerObject;
  67. typedef CALLBACK_API_C( TQ3Status , TQ3ViewerDrawingCallbackMethod )(TQ3ViewerObject theViewer, const void *data);
  68. typedef CALLBACK_API_C( TQ3Status , TQ3ViewerWindowResizeCallbackMethod )(TQ3ViewerObject theViewer, const void *data);
  69. typedef CALLBACK_API_C( TQ3Status , TQ3ViewerPaneResizeNotifyCallbackMethod )(TQ3ViewerObject theViewer, const void *data);
  70. enum {
  71.     kQ3ViewerShowBadge            = 1 << 0,
  72.     kQ3ViewerActive                = 1 << 1,
  73.     kQ3ViewerControllerVisible    = 1 << 2,
  74.     kQ3ViewerButtonCamera        = 1 << 3,
  75.     kQ3ViewerButtonTruck        = 1 << 4,
  76.     kQ3ViewerButtonOrbit        = 1 << 5,
  77.     kQ3ViewerButtonZoom            = 1 << 6,
  78.     kQ3ViewerButtonDolly        = 1 << 7,
  79.     kQ3ViewerButtonReset        = 1 << 8,
  80.     kQ3ViewerButtonNone            = 1 << 9,
  81.     kQ3ViewerOutputTextMode        = 1 << 10,
  82.     kQ3ViewerDraggingInOff        = 1 << 11,
  83.     kQ3ViewerButtonOptions        = 1 << 12,
  84.     kQ3ViewerPaneGrowBox        = 1 << 13,
  85.     kQ3ViewerDefault            = 1 << 15
  86. };
  87.  
  88.  
  89. enum {
  90.     kQ3ViewerEmpty                = 0,
  91.     kQ3ViewerHasModel            = 1 << 0,
  92.     kQ3ViewerHasUndo            = 1 << 1
  93. };
  94.  
  95.  
  96. enum TQ3ViewerCameraView {
  97.     kQ3ViewerCameraRestore        = 0,
  98.     kQ3ViewerCameraFit            = 1,
  99.     kQ3ViewerCameraFront        = 2,
  100.     kQ3ViewerCameraBack            = 3,
  101.     kQ3ViewerCameraLeft            = 4,
  102.     kQ3ViewerCameraRight        = 5,
  103.     kQ3ViewerCameraTop            = 6,
  104.     kQ3ViewerCameraBottom        = 7
  105. };
  106. typedef enum TQ3ViewerCameraView TQ3ViewerCameraView;
  107.  
  108.  
  109. /******************************************************************************
  110.  **                                                                             **
  111.  **                                WM_NOTIFY structures                           **
  112.  **                                                                             **
  113.  *****************************************************************************/
  114.  
  115. struct TQ3ViewerDropFiles {
  116.     NMHDR                             nmhdr;
  117.     HANDLE                             hDrop;
  118. };
  119. typedef struct TQ3ViewerDropFiles        TQ3ViewerDropFiles;
  120.  
  121. struct TQ3ViewerSetView {
  122.     NMHDR                             nmhdr;
  123.     TQ3ViewerCameraView             view;
  124. };
  125. typedef struct TQ3ViewerSetView            TQ3ViewerSetView;
  126.  
  127. struct TQ3ViewerSetViewNumber {
  128.     NMHDR                             nmhdr;
  129.     unsigned long                     number;
  130. };
  131. typedef struct TQ3ViewerSetViewNumber    TQ3ViewerSetViewNumber;
  132.  
  133. struct TQ3ViewerButtonSet {
  134.     NMHDR                             nmhdr;
  135.     unsigned long                     button;
  136. };
  137. typedef struct TQ3ViewerButtonSet        TQ3ViewerButtonSet;
  138. /******************************************************************************
  139.  **                                                                             **
  140.  **                                WM_NOTIFY defines                               **
  141.  **                                                                             **
  142.  *****************************************************************************/
  143.  
  144. #define Q3VNM_DROPFILES        0x5000
  145. #define Q3VNM_CANUNDO        0x5001
  146. #define Q3VNM_DRAWCOMPLETE    0x5002
  147. #define Q3VNM_SETVIEW        0x5003
  148. #define Q3VNM_SETVIEWNUMBER    0x5004
  149. #define Q3VNM_BUTTONSET        0x5005
  150. #define Q3VNM_BADGEHIT        0x5006
  151.  
  152. /******************************************************************************
  153.  **                                                                             **
  154.  **                            Win32 Window Class Name                           **
  155.  **        Can be passed as a parameter to CreateWindow or CreateWindowEx       **
  156.  **                                                                             **
  157.  *****************************************************************************/
  158. #define kQ3ViewerClassName "QD3DViewerWindow"
  159.  
  160. /******************************************************************************
  161.  **                                                                             **
  162.  **                            Win32 Clipboard type                              **
  163.  **                                                                             **
  164.  *****************************************************************************/
  165. #define kQ3ViewerClipboardFormat "QuickDraw 3D Metafile"
  166. /******************************************************************************
  167.  **                                                                             **
  168.  **        Return viewer version number                                         **
  169.  **                                                                             **
  170.  *****************************************************************************/
  171. EXTERN_API_C( TQ3Status )
  172. Q3WinViewerGetVersion            (unsigned long *        majorRevision,
  173.                                  unsigned long *        minorRevision);
  174.  
  175.  
  176. /******************************************************************************
  177.  **                                                                             **
  178.  **        Return viewer release version number                                 **
  179.  **        (in 'vers' format - e.g. 0x01518000 ==> 1.5.1 release)                 **
  180.  **                                                                             **
  181.  *****************************************************************************/
  182. EXTERN_API_C( TQ3Status )
  183. Q3WinViewerGetReleaseVersion    (unsigned long *        releaseRevision);
  184.  
  185.  
  186. /******************************************************************************
  187.  **                                                                             **
  188.  **                        Creation and destruction                             **
  189.  **                Note that this is not a QuickDraw 3D object                     **
  190.  **                                                                             **
  191.  *****************************************************************************/
  192. EXTERN_API_C( TQ3ViewerObject )
  193. Q3WinViewerNew                    (HWND                     window,
  194.                                  const RECT *            rect,
  195.                                  unsigned long             flags);
  196.  
  197. EXTERN_API_C( TQ3Status )
  198. Q3WinViewerDispose                (TQ3ViewerObject         viewer);
  199.  
  200.  
  201. /******************************************************************************
  202.  **                                                                             **
  203.  **                    Functions to attach data to a WinViewer                     **
  204.  **                                                                             **
  205.  *****************************************************************************/
  206. EXTERN_API_C( TQ3Status )
  207. Q3WinViewerUseFile                (TQ3ViewerObject         viewer,
  208.                                  HANDLE                 fileHandle);
  209.  
  210. EXTERN_API_C( TQ3Status )
  211. Q3WinViewerUseData                (TQ3ViewerObject         viewer,
  212.                                  void *                    data,
  213.                                  unsigned long             size);
  214.  
  215.  
  216. /******************************************************************************
  217.  **                                                                             **
  218.  **                Functions to write data out from the WinViewer                 **
  219.  **                                                                             **
  220.  *****************************************************************************/
  221. EXTERN_API_C( TQ3Status )
  222. Q3WinViewerWriteFile            (TQ3ViewerObject         viewer,
  223.                                  HANDLE                 fileHandle);
  224.  
  225. EXTERN_API_C( TQ3Status )
  226. Q3WinViewerWriteData            (TQ3ViewerObject         viewer,
  227.                                  void *                    data,
  228.                                  unsigned long             dataSize,
  229.                                  unsigned long *        actualDataSize);
  230.  
  231.  
  232. /******************************************************************************
  233.  **                                                                             **
  234.  **        Use this function to force the WinViewer to re-draw                     **
  235.  **                                                                             **
  236.  *****************************************************************************/
  237. EXTERN_API_C( TQ3Status )
  238. Q3WinViewerDraw                    (TQ3ViewerObject         viewer);
  239.  
  240. EXTERN_API_C( TQ3Status )
  241. Q3WinViewerDrawContent            (TQ3ViewerObject         viewer);
  242.  
  243. EXTERN_API_C( TQ3Status )
  244. Q3WinViewerDrawControlStrip        (TQ3ViewerObject         viewer);
  245.  
  246.  
  247. /******************************************************************************
  248.  **                                                                             **
  249.  **        Function used by the WinViewer to filter and handle events             **
  250.  **                                                                             **
  251.  *****************************************************************************/
  252. EXTERN_API_C( BOOL )
  253. Q3WinViewerMouseDown            (TQ3ViewerObject         viewer,
  254.                                  long                     x,
  255.                                  long                     y);
  256.  
  257. EXTERN_API_C( BOOL )
  258. Q3WinViewerContinueTracking        (TQ3ViewerObject         viewer,
  259.                                  long                     x,
  260.                                  long                     y);
  261.  
  262. EXTERN_API_C( BOOL )
  263. Q3WinViewerMouseUp                (TQ3ViewerObject         viewer,
  264.                                  long                     x,
  265.                                  long                     y);
  266.  
  267.  
  268. /******************************************************************************
  269.  **                                                                             **
  270.  **        This function returns a Bitmap of the contents of the                  **
  271.  **        WinViewer's window.  The application should dispose the Bitmap.         **
  272.  **                                                                             **
  273.  *****************************************************************************/
  274. EXTERN_API_C( HBITMAP )
  275. Q3WinViewerGetBitmap            (TQ3ViewerObject         viewer);
  276.  
  277.  
  278. /******************************************************************************
  279.  **                                                                             **
  280.  **                    Calls for dealing with Buttons                             **
  281.  **                                                                             **
  282.  *****************************************************************************/
  283. EXTERN_API_C( TQ3Status )
  284. Q3WinViewerGetButtonRect        (TQ3ViewerObject         viewer,
  285.                                  unsigned long             button,
  286.                                  RECT *                    rectangle);
  287.  
  288. EXTERN_API_C( unsigned long )
  289. Q3WinViewerGetCurrentButton        (TQ3ViewerObject         viewer);
  290.  
  291. EXTERN_API_C( TQ3Status )
  292. Q3WinViewerSetCurrentButton        (TQ3ViewerObject         viewer,
  293.                                  unsigned long             button);
  294.  
  295.  
  296. /******************************************************************************
  297.  **                                                                             **
  298.  **        Functions to set/get the group to be displayed by the WinViewer.     **
  299.  **                                                                             **
  300.  *****************************************************************************/
  301. EXTERN_API_C( TQ3Status )
  302. Q3WinViewerUseGroup                (TQ3ViewerObject         viewer,
  303.                                  TQ3GroupObject         group);
  304.  
  305. EXTERN_API_C( TQ3GroupObject )
  306. Q3WinViewerGetGroup                (TQ3ViewerObject         viewer);
  307.  
  308.  
  309. /******************************************************************************
  310.  **                                                                             **
  311.  **        Functions to set/get the color used to clear the window                 **
  312.  **                                                                             **
  313.  *****************************************************************************/
  314. EXTERN_API_C( TQ3Status )
  315. Q3WinViewerSetBackgroundColor    (TQ3ViewerObject         viewer,
  316.                                  TQ3ColorARGB *            color);
  317.  
  318. EXTERN_API_C( TQ3Status )
  319. Q3WinViewerGetBackgroundColor    (TQ3ViewerObject         viewer,
  320.                                  TQ3ColorARGB *            color);
  321.  
  322.  
  323. /******************************************************************************
  324.  **                                                                             **
  325.  **        Getting/Setting a WinViewer's View object.                             **
  326.  **                                                                             **
  327.  *****************************************************************************/
  328. EXTERN_API_C( TQ3ViewObject )
  329. Q3WinViewerGetView                (TQ3ViewerObject         viewer);
  330.  
  331. EXTERN_API_C( TQ3Status )
  332. Q3WinViewerRestoreView            (TQ3ViewerObject         viewer);
  333.  
  334.  
  335. /******************************************************************************
  336.  **                                                                             **
  337.  **        Calls for setting/getting WinViewer flags                             **
  338.  **                                                                             **
  339.  *****************************************************************************/
  340. EXTERN_API_C( TQ3Status )
  341. Q3WinViewerSetFlags                (TQ3ViewerObject         viewer,
  342.                                  unsigned long             flags);
  343.  
  344. EXTERN_API_C( unsigned long )
  345. Q3WinViewerGetFlags                (TQ3ViewerObject         viewer);
  346.  
  347.  
  348. /******************************************************************************
  349.  **                                                                             **
  350.  **        Calls related to bounds/dimensions.  Bounds is the size of              **
  351.  **        the window.  Dimensions can either be the Rect from the ViewHints     **
  352.  **        or the current dimensions of the window (if you do a Set).             **
  353.  **                                                                             **
  354.  *****************************************************************************/
  355. EXTERN_API_C( TQ3Status )
  356. Q3WinViewerSetBounds            (TQ3ViewerObject         viewer,
  357.                                  RECT *                    bounds);
  358.  
  359. EXTERN_API_C( TQ3Status )
  360. Q3WinViewerGetBounds            (TQ3ViewerObject         viewer,
  361.                                  RECT *                    bounds);
  362.  
  363. EXTERN_API_C( TQ3Status )
  364. Q3WinViewerSetDimension            (TQ3ViewerObject         viewer,
  365.                                  unsigned long             width,
  366.                                  unsigned long             height);
  367.  
  368. EXTERN_API_C( TQ3Status )
  369. Q3WinViewerGetDimension            (TQ3ViewerObject         viewer,
  370.                                  unsigned long *        width,
  371.                                  unsigned long *        height);
  372.  
  373. EXTERN_API_C( TQ3Status )
  374. Q3WinViewerGetMinimumDimension    (TQ3ViewerObject         viewer,
  375.                                  unsigned long *        width,
  376.                                  unsigned long *        height);
  377.  
  378.  
  379. /******************************************************************************
  380.  **                                                                             **
  381.  **                            Window related calls                             **
  382.  **                                                                             **
  383.  *****************************************************************************/
  384. EXTERN_API_C( TQ3Status )
  385. Q3WinViewerSetWindow            (TQ3ViewerObject         viewer,
  386.                                  HWND                     window);
  387.  
  388. EXTERN_API_C( HWND )
  389. Q3WinViewerGetWindow            (TQ3ViewerObject         viewer);
  390.  
  391. EXTERN_API_C( TQ3ViewerObject )
  392. Q3WinViewerGetViewer            (HWND                     theWindow);
  393.  
  394. EXTERN_API_C( HWND )
  395. Q3WinViewerGetControlStrip        (TQ3ViewerObject         viewer);
  396.  
  397.  
  398. /******************************************************************************
  399.  **                                                                             **
  400.  **        Adjust Cursor provided for compatibility with Mac Viewer             **
  401.  **                                                                             **
  402.  *****************************************************************************/
  403. EXTERN_API_C( TQ3Boolean )
  404. Q3WinViewerAdjustCursor            (TQ3ViewerObject         viewer,
  405.                                  long                     x,
  406.                                  long                     y);
  407.  
  408. EXTERN_API_C( TQ3Status )
  409. Q3WinViewerCursorChanged        (TQ3ViewerObject         viewer);
  410.  
  411.  
  412. /******************************************************************************
  413.  **                                                                             **
  414.  **        Returns the state of the WinViewer.  See the constant defined at the **
  415.  **        top of this file.                                                     **
  416.  **                                                                             **
  417.  *****************************************************************************/
  418. EXTERN_API_C( unsigned long )
  419. Q3WinViewerGetState                (TQ3ViewerObject         viewer);
  420.  
  421.  
  422. /******************************************************************************
  423.  **                                                                             **
  424.  **                            Clipboard utilities                                 **
  425.  **                                                                             **
  426.  *****************************************************************************/
  427. EXTERN_API_C( TQ3Status )
  428. Q3WinViewerClear                (TQ3ViewerObject         viewer);
  429.  
  430. EXTERN_API_C( TQ3Status )
  431. Q3WinViewerCut                    (TQ3ViewerObject         viewer);
  432.  
  433. EXTERN_API_C( TQ3Status )
  434. Q3WinViewerCopy                    (TQ3ViewerObject         viewer);
  435.  
  436. EXTERN_API_C( TQ3Status )
  437. Q3WinViewerPaste                (TQ3ViewerObject         viewer);
  438.  
  439.  
  440. /******************************************************************************
  441.  **                                                                             **
  442.  **                                Undo                                          **
  443.  **                                                                             **
  444.  *****************************************************************************/
  445. EXTERN_API_C( TQ3Status )
  446. Q3WinViewerUndo                    (TQ3ViewerObject         viewer);
  447.  
  448. EXTERN_API_C( TQ3Boolean )
  449. Q3WinViewerGetUndoString        (TQ3ViewerObject         viewer,
  450.                                  char *                    theString,
  451.                                  unsigned long             stringSize,
  452.                                  unsigned long *        actualSize);
  453.  
  454.  
  455. /******************************************************************************
  456.  **                                                                             **
  457.  **                            New Camera Stuff                                 **
  458.  **                                                                             **
  459.  *****************************************************************************/
  460. EXTERN_API_C( TQ3Status )
  461. Q3WinViewerGetCameraCount        (TQ3ViewerObject         viewer,
  462.                                  unsigned long *        count);
  463.  
  464. EXTERN_API_C( TQ3Status )
  465. Q3WinViewerSetCameraNumber        (TQ3ViewerObject         viewer,
  466.                                  unsigned long             cameraNo);
  467.  
  468. EXTERN_API_C( TQ3Status )
  469. Q3WinViewerSetCameraView        (TQ3ViewerObject         viewer,
  470.                                  TQ3ViewerCameraView     viewType);
  471.  
  472. #endif  /* TARGET_OS_WIN32 */
  473.  
  474.  
  475.  
  476. #if PRAGMA_ENUM_ALWAYSINT
  477.     #pragma enumsalwaysint reset
  478. #elif PRAGMA_ENUM_OPTIONS
  479.     #pragma option enum=reset
  480. #elif defined(PRAGMA_ENUM_PACK__QD3DWINVIEWER__)
  481.     #pragma options(pack_enums)
  482. #endif
  483.  
  484. #if PRAGMA_STRUCT_ALIGN
  485.     #pragma options align=reset
  486. #elif PRAGMA_STRUCT_PACKPUSH
  487.     #pragma pack(pop)
  488. #elif PRAGMA_STRUCT_PACK
  489.     #pragma pack()
  490. #endif
  491.  
  492. #ifdef PRAGMA_IMPORT_OFF
  493. #pragma import off
  494. #elif PRAGMA_IMPORT
  495. #pragma import reset
  496. #endif
  497.  
  498. #ifdef __cplusplus
  499. }
  500. #endif
  501.  
  502. #endif /* __QD3DWINVIEWER__ */
  503.  
  504.